热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

账单|差错_初探支付对账

篇首语:本文由编程笔记#小编为大家整理,主要介绍了初探支付对账相关的知识,希望对你有一定的参考价值。 大家好,我是老三,好久不见,最近比较忙碌,

篇首语:本文由编程笔记#小编为大家整理,主要介绍了初探支付对账相关的知识,希望对你有一定的参考价值。


大家好,我是老三,好久不见,最近比较忙碌,状态也不是太好,很久没有输出。

最近在做对账系统的调研和设计,给大家分享一些对账系统的知识。


什么是对账?

有个男人叫小帅,娶了个老婆,叫小美,早上,小美给小帅二十块钱买早餐,小帅买了包子、油条、豆浆回来,并说钱已经花完了,小美不信,拉着小帅到了早餐铺,拉着老板的账单对了一下,发现还剩两块钱……

这就是一个简单的对账场景,我们再看看电商的大概支付链路:


  • 用户在电商平台下单,支付
  • 支付服务向外部支付渠道发起支付请求
  • 支付渠道扣减用户余额,或者请求银行扣款
  • 完成支付后,支付服务同步支付状态,电商平台开始履约(发货)
  • 到这就完了吗?还没有,支付渠道还要做清结算,把交易的余额结算到商户账户

可以看到,涉及到的系统还是比较多的,对电商内部而言,可能涉及到支付、订单、风控、履约,对于外部而言,电商和第三方渠道,支付渠道和银行。内部部之间,想不出差错那简直得图灵、冯诺依曼诸神保佑,所以,对账系统,是交易最后也是非常重要的一环,

通过对账,能找到各个内、外部系统之间不一致的交易,并通过差错处理,厘清账务,防止资损。


如何对账?

电商系统内部的对账相对简单一些,不管是通接口、还是数据聚合,都可以跨服务、跨库地核对交易数据。

我们这里主要讨论电商平台和三方渠道的对账:


对的是哪些账?

对于电商公司而言:


  • 面对用户,希望“不少收一分钱,不多收一分钱”,和用户之间能做到钱货两清,这就要求电商平台的应收应付和三方渠道的实收实付一致,也就是业务对账
  • 面对三方渠道,希望能做到清算的一致性,也就实收扣除服务费的金额一致,还有结算的一致性,也就是三方渠道到商户账户结算金额一致,也就是资金对账

这篇文章我们主要讨论业务对账。


通过什么对账?

通过什么对账呢?

对于电商平台内部,需要把各个服务的交易相关数据聚合起来,一般是通过拉的方式:


  • binlog订阅
  • 订阅消息
  • 定时任务

对于外部的对账数据,各个支付渠道一般会提供对账单,不同渠道的对账单格式上不太一样:


  • 微信对账单,txt格式


  • 支付宝对账单,csv格式


  • Paypal对账单,csv格式

对账文件当然是不能直接使用的,需要把三方渠道的对账单,清洗成对账系统用到的数据:

那对账文件是如何获取的呢?一般主要有两种方式:


  • http接口下载
  • ftp服务器下载

那对账文件是什么时间生成的呢?国内的支付渠道一般对账单生成时间是T+1。


对账的时机?

什么时候开始对账?对账一般分为两种:离线对账实时对账

我们这篇文章主要讲的就是离线对账,在对账单下载解析完成之后,开始对账,也就是所谓的T+1。例如支付宝,6点生成对账单,可以定时6:30去下载和解析对账单,解析落库之后,就可以开始进行对账。

实时对账呢,一般是对交易的状态进行监听(mq、binlog),监听到状态的变化,就开始核对。


对账逻辑是什么样的?

看看离线对账的逻辑:

那么对账是以什么为基准呢?是本系统的订单,还是支付渠道的订单?

为了尽可能保证准确性,一般是双向的,也就是基于本系统订单,比较三方对账单,也基于三方对账单比较本系统对账单,进行复核。

通常要核对的是这几个点:


  • 支付记录是否在两边都存在
  • 支付记录状态是否一致
  • 支付记录的金额是否一致

如果没有问题,那这比流水就对平了,反之就是发生了差错:


  • 错帐:支付状态不一致;支付金额不一致
  • 短款:电商平台有支付信息,支付渠道没有
  • 长款:仅支付渠道有支付信息

怎么处理差错?

对于常见的有规律的差错单,我们可以设计一些规则来自动处理,比如跨日交易问题,可以查看前一日的交易记录,或者后一日的交易记录,查看是否能够对平。还有其它的一些汇率换算等等问题,都可以尝试对平。

对于对不平的账,就需要标记错帐,进行人工处理,例如发生了掉单,可以给用户退款;例如用户未退款,可以尝试拦截发货。


支付对账架构如何设计?

我们来看看一些对账系统的架构设计:


  • 美团


  • 有赞对账架构设计


  • 阿里商旅对账架构


  • 小黑十一点半大佬画的对账架构设计

可以看到,主要就是那些东西,数据存储(DB、缓存、大数据)、数据订阅(binlog、mq、rpc)、task等等。


小结

这篇文章给大家分享了一些对账系统的知识,老三对于对账系统,目前也只是调研和设计阶段,大家有什么意见可以和我交流,后续会给大家分享更多电商、支付相关的东西,点赞关注不迷路!





对账参考和学习资料:

[1].《支付架构实战》

[2].支付对账三部曲之资金对账系统设计篇

[3].支付对账系统怎么设计?

[4].支付对账系统序章:千万级数据对账怎么这么难?

[5].对账系统从入门到精通

[6].千万级支付对账系统怎么玩(下篇)?

[7].[美团配送资金安全治理之对账体系建设

[8].有赞业务对账平台的探索与实践

[9].准确率100%,阿里商旅账单系统架构设计实践




推荐阅读
  • 本文探讨了在一个物理隔离的环境中构建数据交换平台所面临的挑战,包括但不限于数据加密、传输监控及确保文件交换的安全性和可靠性。同时,作者结合自身项目经验,分享了项目规划、实施过程中的关键决策及其背后的思考。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • 对象存储与块存储、文件存储等对比
    看到一篇文档,讲对象存储,好奇,搜索文章,摘抄,学习记录!背景:传统存储在面对海量非结构化数据时,在存储、分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结 ... [详细]
  • 本文探讨了一种方法,通过开发C#应用程序来拦截并处理从遗留系统发出的Http请求,该系统原本依赖于已停止服务的Web服务。解决方案涉及使用代理技术或HTTP监听器来捕获和重定向这些请求。 ... [详细]
  • 2023年PHP处理请求超时的全面指南
    本文详细介绍了在PHP中处理请求超时的各种方法,包括设置脚本执行时间、处理file_get_contents函数超时以及优化AJAX请求等,适合开发者参考学习。 ... [详细]
  • 浏览器、中间件与服务器的交互机制
    本文详细探讨了浏览器、中间件和服务器之间的交互过程,特别是HTTP请求的完整流程,包括DNS解析、TCP连接建立及数据传输等关键步骤。 ... [详细]
  • 深入解析 Git 代码提交流程及常见问题处理
    本文详细阐述了使用 Git 进行代码提交的具体步骤,并提供了遇到常见问题时的解决方案,旨在帮助开发者更加高效地管理代码。 ... [详细]
  • Web网络基础
    目录儿1使用HTTP协议访问Web2HTTP的诞生2.1因特网的起源2.2互联网、因特网与万维网2.3万维网与HTTP3网络基础TCPIP3.1TCPIP协议族3.2TCPIP的分 ... [详细]
  • FTP作为一种传统的文件传输协议,广泛用于不同设备间的文件交换。然而,随着网络安全需求的提升及传输效率的要求,选择合适的FTP客户端变得尤为重要。本文将介绍如何利用WinSCP这款强大且安全的工具,实现两台电脑之间的文件高效传输。 ... [详细]
  • Python3爬虫入门:pyspider的基本使用[python爬虫入门]
    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要通过爬取去哪儿网的旅游攻略来给大家介绍pyspid ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 在Python编程中,经常需要处理文件下载的任务。本文将介绍三种常用的下载方法:使用urllib、urllib2以及requests库进行HTTP请求下载,同时也会提及如何通过ftplib从FTP服务器下载文件。 ... [详细]
  • 如何处理PHP缺少扩展的问题
    本文将详细介绍如何解决PHP环境中缺少扩展的问题,包括检查当前环境、修改配置文件以及验证修改是否生效的具体步骤,帮助开发者更好地管理和使用PHP扩展。 ... [详细]
  • vsftpd配置(虚拟用户、匿名用户登录)
    一、ftp服务搭建(一)概述1.ftp连接及传输模式(1)控制连接TCP21,用于发送FTP命令信息 ... [详细]
  • Linux下MySQL 8.0.28安装指南
    本文详细介绍了在Linux系统上安装MySQL 8.0.28的步骤,包括下载数据库、解压数据包、安装必要组件和启动MySQL服务。 ... [详细]
author-avatar
陈艹桂肀琰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有